home *** CD-ROM | disk | FTP | other *** search
/ The Best of MacTutor - S…e Code for Volumes 1 to 5 / The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin / Source Code / #10 (Jul 86) / modula source / PBFileManager.DEF < prev    next >
Text File  |  1986-04-10  |  11KB  |  397 lines

  1. (* Tom Taylor
  2.    3707 Poinciana Dr. #137
  3.    Santa Clara, CA 95051 *)
  4.  
  5. DEFINITION MODULE PBFileManager;
  6.  
  7. (* This module defines the low level
  8.    file system described in the latest
  9.    File Manager documentation.  The
  10.    types and procedures defined in
  11.    this module support both MFS and
  12.    HFS calls. *)
  13.  
  14.   FROM OSQueues IMPORT
  15.     QElemPtr;
  16.   FROM MacSystemTypes IMPORT
  17.     LongCard, Ptr, OsErr,
  18.     StringPtr;
  19.   FROM FileManager IMPORT
  20.     FInfo;
  21.   FROM SYSTEM IMPORT
  22.     ADDRESS;
  23.  
  24.   EXPORT QUALIFIED
  25.   
  26.   (* Types *)
  27.     ParamBlkType, ParmBlkPtr, ParamBlockRec,
  28.     CMovePBPtr, CMovePBRec, HParmBlkPtr,
  29.     HParamBlockRec, WDPBPtr, WDPBRec,
  30.     CInfoType, CInfoPBPtr, CInfoPBRec,
  31.     FCBPBPtr, FCBPBRec,
  32.     
  33.   (* Procedures *)
  34.     PBMountVol, PBGetVInfo, PBHGetVInfo,
  35.     PBHSetVInfo, PBGetVol, PBHGetVol,
  36.     PBSetVol, PBHSetVol, PBFlushVol,
  37.     PBUnmountVol, PBOffLine, PBEject,
  38.     PBOpen, PBHOpen, PBOpenRF, 
  39.     PBHOpenRF, PBLockRange,
  40.     PBUnlockRange, PBRead, PBWrite,
  41.     PBGetFPos, PBSetFPos, PBGetEOF,
  42.     PBSetEOF, PBAllocate, PBAllocContig,
  43.     PBFlushFile, PBClose, PBCreate,
  44.     PBHCreate, PBDirCreate, PBDelete,
  45.     PBHDelete, PBGetFInfo, PBHGetFInfo,
  46.     PBSetFInfo, PBHSetFInfo, PBSetFLock,
  47.     PBHSetFLock, PBRstFLock, PBHRstFLock,
  48.     PBSetFVers, PBRename, PBHRename,
  49.     PBGetCatInfo, PBSetCatInfo, PBCatMove,
  50.     PBOpenWD, PBCloseWD, PBGetWDInfo,
  51.     PBGetFCBInfo;
  52.  
  53.   TYPE
  54.     ParamBlkType = (ioParam, fileParam,
  55.                     volumeParam, cntrlParam);
  56.  
  57.     ParmBlkPtr = POINTER TO ParamBlockRec;
  58.     ParamBlockRec = RECORD
  59.       qLink:        QElemPtr;
  60.       qType:        INTEGER;
  61.       ioTrap:        INTEGER;
  62.       ioCmdAddr:    Ptr;
  63.       ioCompletion:    ADDRESS;
  64.       ioResult:        OsErr;
  65.       ioNamePtr:    StringPtr;
  66.       ioVRefNum:    INTEGER;
  67.       CASE ParamBlkType OF
  68.     ioParam:
  69.       ioRefNum:    INTEGER;
  70.       ioVersPerm:    ARRAY [0..1] OF CHAR;
  71.         (* ioVersPerm[0] = ioVersNum
  72.            ioVersPerm[1] = ioPermssn *)
  73.       ioMisc:    Ptr;
  74.       ioBuffer:    Ptr;
  75.       ioReqCount:    LongCard;
  76.       ioActCount:    LongCard;
  77.       ioPosMode:    INTEGER;
  78.       ioPosOffset:    LongCard;
  79.       | fileParam:
  80.       ioFRefNum:    INTEGER;
  81.       ioFVersNum:    ARRAY [0..1] OF CHAR;
  82.         (* ioFVersNum[0] = ioFVersNum
  83.            ioFVersNum[1] = filler1 *)
  84.       ioFDirIndex:    INTEGER;
  85.       ioFlAttrVers:    ARRAY [0..1] OF CHAR;
  86.         (* ioFlAttrVers[0] = ioFlAttrib
  87.            ioFlAttrVers[1] = ioFlVersNum *)
  88.       ioFlFndrInfo:    FInfo;
  89.       ioFlNum:    LongCard;
  90.       ioFlStBlk:    INTEGER;
  91.       ioFlLgLen:    LongCard;
  92.       ioFlPyLen:    LongCard;
  93.       ioFlRStBlk:    INTEGER;
  94.       ioFlRLgLen:    LongCard;
  95.       ioFlRPyLen:    LongCard;
  96.       ioFlCrDat:    LongCard;
  97.       ioFlMdDat:    LongCard;
  98.       | volumeParam:
  99.       filler2:    LongCard;
  100.       ioVolIndex:    INTEGER;
  101.       ioVCrDate:    LongCard;
  102.       ioVLsBkUp:    LongCard;
  103.       ioVAtrb:    INTEGER;
  104.       ioVNmFls:    INTEGER;
  105.       ioVDirSt:    INTEGER;
  106.       ioVBlLn:    INTEGER;
  107.       ioVNmAlBlks:    INTEGER;
  108.       ioVAlBlkSiz:    LongCard;
  109.       ioVClpSiz:    LongCard;
  110.       ioAlBlSt:    INTEGER;
  111.       ioVNxtFNum:    LongCard;
  112.       ioVFrBlk:    INTEGER;
  113.       | cntrlParam:
  114.       (* used by Device Manager *)
  115.       END;
  116.     END;
  117.     
  118.     CMovePBPtr = POINTER TO CMovePBRec;
  119.     CMovePBRec = RECORD
  120.       qLink:        QElemPtr;
  121.       qType:        INTEGER;
  122.       ioTrap:        INTEGER;
  123.       ioCmdAddr:    Ptr;
  124.       ioCompletion:    ADDRESS;
  125.       ioResult:    OsErr;
  126.       ioNamePtr:    StringPtr;
  127.       ioVRefNum:    INTEGER;
  128.       filler1:        LongCard;
  129.       ioNewName:    StringPtr;
  130.       filler2:        LongCard;
  131.       ioNewDirID:    LongCard;
  132.       filler3:        ARRAY [1..2] OF LongCard;
  133.       ioDirID:        LongCard;
  134.     END;
  135.      
  136.     HParmBlkPtr = POINTER TO HParamBlockRec;
  137.     HParamBlockRec = RECORD
  138.       qLink:        QElemPtr;
  139.       qType:        INTEGER;
  140.       ioTrap:        INTEGER;
  141.       ioCmdAddr:    Ptr;
  142.       ioCompletion:    ADDRESS;
  143.       ioResult:    OsErr;
  144.       ioNamePtr:    StringPtr;
  145.       ioVRefNum:    INTEGER;
  146.       CASE ParamBlkType OF
  147.     ioParam:
  148.       ioRefNum:    INTEGER;
  149.       ioVersPerm:    ARRAY [0..1] OF CHAR;
  150.         (* ioVersPerm[0] = ioVersNum
  151.            ioVersPerm[1] = ioPermssn *)
  152.       ioMisc:    Ptr;
  153.       ioBuffer:    Ptr;
  154.       ioReqCount:    LongCard;
  155.       ioActCount:    LongCard;
  156.       ioPosMode:    INTEGER;
  157.       ioPosOffset:    LongCard;
  158.       | fileParam:
  159.       ioFRefNum:    INTEGER;
  160.       ioFVersNum:    ARRAY [0..1] OF CHAR;
  161.         (* ioFVersNum[0] = ioFVersNum
  162.            ioFVersNum[1] = filler1 *)
  163.       ioFDirIndex:    INTEGER;
  164.       ioFlAttrVers:ARRAY [0..1] OF CHAR;
  165.         (* ioFlAttrVers[0] = ioFlAttrib
  166.            ioFlAttrVers[1] = ioFlVersNum *)
  167.       ioFlFndrInfo:FInfo;
  168.       ioDirID:    LongCard;
  169.       ioFlStBlk:    INTEGER;
  170.       ioFlLgLen:    LongCard;
  171.       ioFlPyLen:    LongCard;
  172.       ioFlRStBlk:    INTEGER;
  173.       ioFlRLgLen:    LongCard;
  174.       ioFlRPyLen:    LongCard;
  175.       ioFlCrDat:    LongCard;
  176.       ioFlMdDat:    LongCard;
  177.       | volumeParam:
  178.       filler2:    LongCard;
  179.       ioVolIndex:    INTEGER;
  180.       ioVCrDate:    LongCard;
  181.       ioVLsMod:    LongCard;
  182.       ioVAtrb:    INTEGER;
  183.       ioVNmFls:    INTEGER;
  184.       ioVBitMap:    INTEGER;
  185.       ioAllocPtr:    INTEGER;
  186.       ioVNmAlBlks:    INTEGER;
  187.       ioVAlBlkSiz:    LongCard;
  188.       ioVClpSiz:    LongCard;
  189.       ioAlBlSt:    INTEGER;
  190.       ioVNxtCNID:    LongCard;
  191.       ioVFrBlk:    INTEGER;
  192.       ioVSigWord:    INTEGER;
  193.       ioVDrvInfo:    INTEGER;
  194.       ioVDRefNum:    INTEGER;
  195.       ioVFSID:    INTEGER;
  196.       ioVBkUp:    LongCard;
  197.       ioVSeqNum:    INTEGER;
  198.       ioVWrCnt:    LongCard;
  199.       ioVFilCnt:    LongCard;
  200.       ioVDirCnt:    LongCard;
  201.       ioVFndrInfo:    ARRAY [1..8] OF LongCard;
  202.       END;
  203.     END;
  204.  
  205.     WDPBPtr = POINTER TO WDPBRec;
  206.     WDPBRec = RECORD
  207.       qLink:        QElemPtr;
  208.       qType:        INTEGER;
  209.       ioTrap:        INTEGER;
  210.       ioCmdAddr:    Ptr;
  211.       ioCompletion:    ADDRESS;
  212.       ioResult:    OsErr;
  213.       ioNamePtr:    StringPtr;
  214.       ioVRefNum:    INTEGER;
  215.       filler1:        INTEGER;
  216.       ioWDIndex:    INTEGER;
  217.       ioWDProcID:    LongCard;
  218.       ioWDVRefNum:    INTEGER;
  219.       filler2:        ARRAY [1..7] OF INTEGER;
  220.       ioWDDirID:    LongCard;
  221.     END;
  222.      
  223.     CInfoType = (hFileInfo, dirInfo);
  224.     CInfoPBPtr = POINTER TO CInfoPBRec;
  225.     CInfoPBRec = RECORD
  226.       qLink:        QElemPtr;
  227.       qType:        INTEGER;
  228.       ioTrap:        INTEGER;
  229.       ioCmdAddr:    Ptr;
  230.       ioCompletion:    ADDRESS;
  231.       ioResult:    OsErr;
  232.       ioNamePtr:    StringPtr;
  233.       ioVRefNum:    INTEGER;
  234.       ioFRefNum:    INTEGER;
  235.       filler1:        INTEGER;
  236.       ioFDirIndex:    INTEGER;
  237.       ioFlAttrib:    ARRAY [0..1] OF CHAR;
  238.     (* ioFlAttrib[0] = ioFlAttrib
  239.        ioFlAttrib[1] = filler2 *)
  240.       CASE CInfoType OF
  241.     hFileInfo:
  242.       ioFlFndrInfo:FInfo;
  243.       ioFlNum:    LongCard;
  244.       ioFlStBlk:    INTEGER;
  245.       ioFlLgLen:    LongCard;
  246.       ioFlPyLen:    LongCard;
  247.       ioFlRStBlk:    INTEGER;
  248.       ioFlRLgLen:    LongCard;
  249.       ioFlRPyLen:    LongCard;
  250.       ioFlCrDat:    LongCard;
  251.       ioFlMdDat:    LongCard;
  252.       ioFlBkDat:    LongCard;
  253.       ioFlXFndrInfo:FInfo;
  254.       ioFlParID:    LongCard;
  255.       ioFlClpSiz:    LongCard;
  256.       | dirInfo:
  257.       ioDrUsrWds:    ARRAY [1..8] OF INTEGER;
  258.       ioDrDirID:    LongCard;
  259.       ioDrNmFls:    INTEGER;
  260.       filler3:    ARRAY [1..9] OF INTEGER;
  261.       ioDrCrDat:    LongCard;
  262.       ioDrMdDat:    LongCard;
  263.       ioDrBkDat:    LongCard;
  264.       ioDrFndrInfo:ARRAY [1..8] OF INTEGER;
  265.       ioDrParID:    LongCard;
  266.        END;
  267.     END;
  268.  
  269.     FCBPBPtr = POINTER TO FCBPBRec;
  270.     FCBPBRec = RECORD
  271.       qLink:        QElemPtr;
  272.       qType:        INTEGER;
  273.       ioTrap:        INTEGER;
  274.       ioCmdAddr:    Ptr;
  275.       ioCompletion:    ADDRESS;
  276.       ioResult:        OsErr;
  277.       ioNamePtr:    StringPtr;
  278.       ioVRefNum:    INTEGER;
  279.       ioRefNum:        INTEGER;
  280.       filler1:        INTEGER;
  281.       ioFCBIndx:    LongCard;
  282.       ioFCBFlNm:    LongCard;
  283.       ioFCBFlags:    INTEGER;
  284.       ioFCBStBlk:    INTEGER;
  285.       ioFCBEOF:        LongCard;
  286.       ioFCBPLen:    LongCard;
  287.       ioFCBCrPs:    LongCard;
  288.       ioFCBVRefNum:    INTEGER;
  289.       ioFCBClpSiz:    LongCard;
  290.       ioFCBParID:    LongCard;
  291.     END;
  292.  
  293.     PROCEDURE PBMountVol
  294.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  295.     PROCEDURE PBGetVInfo
  296.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  297.     PROCEDURE PBHGetVInfo
  298.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  299.     PROCEDURE PBHSetVInfo
  300.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  301.     PROCEDURE PBGetVol
  302.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  303.     PROCEDURE PBHGetVol
  304.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  305.     PROCEDURE PBSetVol
  306.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  307.     PROCEDURE PBHSetVol
  308.         (pBlk: WDPBPtr; async: BOOLEAN) : OsErr;
  309.     PROCEDURE PBFlushVol
  310.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  311.     PROCEDURE PBUnmountVol
  312.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  313.     PROCEDURE PBOffLine
  314.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  315.     PROCEDURE PBEject
  316.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  317.     PROCEDURE PBOpen
  318.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  319.     PROCEDURE PBHOpen
  320.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  321.     PROCEDURE PBOpenRF
  322.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  323.     PROCEDURE PBHOpenRF
  324.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  325.     PROCEDURE PBLockRange
  326.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  327.     PROCEDURE PBUnlockRange
  328.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  329.     PROCEDURE PBRead
  330.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  331.     PROCEDURE PBWrite
  332.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  333.     PROCEDURE PBGetFPos
  334.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  335.     PROCEDURE PBSetFPos
  336.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  337.     PROCEDURE PBGetEOF
  338.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  339.     PROCEDURE PBSetEOF
  340.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  341.     PROCEDURE PBAllocate
  342.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  343.     PROCEDURE PBAllocContig
  344.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  345.     PROCEDURE PBFlushFile
  346.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  347.     PROCEDURE PBClose
  348.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  349.     PROCEDURE PBCreate
  350.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  351.     PROCEDURE PBHCreate
  352.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  353.     PROCEDURE PBDirCreate
  354.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  355.     PROCEDURE PBDelete
  356.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  357.     PROCEDURE PBHDelete
  358.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  359.     PROCEDURE PBGetFInfo
  360.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  361.     PROCEDURE PBHGetFInfo
  362.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  363.     PROCEDURE PBSetFInfo
  364.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  365.     PROCEDURE PBHSetFInfo
  366.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  367.     PROCEDURE PBSetFLock
  368.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  369.     PROCEDURE PBHSetFLock
  370.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  371.     PROCEDURE PBRstFLock
  372.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  373.     PROCEDURE PBHRstFLock
  374.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  375.     PROCEDURE PBSetFVers
  376.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  377.     PROCEDURE PBRename
  378.         (pBlk: ParmBlkPtr; async: BOOLEAN) : OsErr;
  379.     PROCEDURE PBHRename
  380.         (pBlk: HParmBlkPtr; async: BOOLEAN) : OsErr;
  381.     PROCEDURE PBGetCatInfo
  382.         (pBlk: CInfoPBPtr; async: BOOLEAN) : OsErr;
  383.     PROCEDURE PBSetCatInfo
  384.         (pBlk: CInfoPBPtr; async: BOOLEAN) : OsErr;
  385.     PROCEDURE PBCatMove
  386.         (pBlk: CInfoPBPtr; async: BOOLEAN) : OsErr;
  387.     PROCEDURE PBOpenWD
  388.         (pBlk: WDPBPtr; async: BOOLEAN) : OsErr;
  389.     PROCEDURE PBCloseWD
  390.         (pBlk: WDPBPtr; async: BOOLEAN) : OsErr;
  391.     PROCEDURE PBGetWDInfo
  392.         (pBlk: WDPBPtr; async: BOOLEAN) : OsErr;
  393.     PROCEDURE PBGetFCBInfo
  394.         (pBlk: FCBPBPtr; async: BOOLEAN) : OsErr;
  395.  
  396. END PBFileManager.
  397.